#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
简单的HTTP服务器，用于分享HTML页面
使用方法：
1. 确保Python已安装
2. 在命令行运行：python server.py
3. 访问 http://你的IP地址:8000 即可查看页面
"""

import http.server
import socketserver
import socket
import webbrowser
import os
from pathlib import Path

# 配置
PORT = 8000
DIRECTORY = "."

class MyHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, directory=DIRECTORY, **kwargs)

def get_local_ip():
    """获取本机IP地址"""
    try:
        # 连接到一个不存在的地址来获取本机IP
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(("8.8.8.8", 80))
        ip = s.getsockname()[0]
        s.close()
        return ip
    except:
        return "127.0.0.1"

def main():
    # 检查index.html是否存在
    if not os.path.exists("index.html"):
        print("❌ 错误：找不到 index.html 文件")
        print("请确保在包含 index.html 的目录中运行此脚本")
        return
    
    local_ip = get_local_ip()
    
    print("🚀 启动本地服务器...")
    print(f"📁 服务目录: {os.path.abspath(DIRECTORY)}")
    print(f"🌐 端口: {PORT}")
    print("\n" + "="*50)
    print("📱 访问地址:")
    print(f"   本机访问: http://localhost:{PORT}")
    print(f"   局域网访问: http://{local_ip}:{PORT}")
    print("="*50)
    print("\n💡 使用说明:")
    print("1. 本机访问：直接点击本机访问链接")
    print("2. 手机/其他设备访问：")
    print("   - 确保设备连接同一WiFi")
    print("   - 在浏览器输入局域网访问地址")
    print("3. 微信分享问题：")
    print("   - 微信会拦截本地IP链接")
    print("   - 请打开 qr_generator.html 生成二维码")
    print("   - 将二维码图片发送到微信群/朋友")
    print("4. 按 Ctrl+C 停止服务器")
    print("\n🔄 服务器运行中...")
    
    try:
        with socketserver.TCPServer(("", PORT), MyHTTPRequestHandler) as httpd:
            # 自动打开浏览器
            webbrowser.open(f"http://localhost:{PORT}")
            httpd.serve_forever()
    except KeyboardInterrupt:
        print("\n\n✅ 服务器已停止")
    except OSError as e:
        if "Address already in use" in str(e):
            print(f"❌ 端口 {PORT} 已被占用，请尝试关闭其他程序或修改端口号")
        else:
            print(f"❌ 启动失败: {e}")

if __name__ == "__main__":
    main()
